docs(readme): publish the outage between write #70 and #92 · plus the agent-reach skill - #17
Merged
Merged
Conversation
…its between them
The previous figure was a 2026-07-08 snapshot. Re-measured 2026-08-29 against
`erc8004_reputation_writes`: 92. The old number is marked superseded rather than
withdrawn, so a reader can see the series rather than only its current value.
WHAT THE NUMBER HIDES, NOW STATED. There have been two pauses, and the second is
the more instructive:
2026-06-22 -> 2026-07-08 settlement path re-wired (already documented)
2026-08-17 -> 2026-08-29 an upstream provider retired the model our peer
validation called, so every validator errored — and
the aggregation counted an unreachable validator as a
score of ZERO rather than as not-measured
The second produced a confident failing verdict about work nobody had assessed,
and disputed twelve consecutive daily runs. Both halves are fixed upstream in
repid-engine: the model is configuration rather than a literal, and a validator
that does not answer is excluded from the aggregate instead of counted against the
provider.
Publishing the gap rather than the average is the point. A trust protocol that
reports only its good weeks is making the same category of claim it exists to
detect, and the count going UP across an outage is exactly why a bigger number is
not evidence of health.
The linked transaction is verifiable independently: the minter re-reads the receipt
from Base Sepolia (status 0x1, sent to the ReputationRegistry) and exits non-zero
rather than record an unverified write, so every row counted here was confirmed
against the chain and not against our own database.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GtRGdqH6BZcXDDFDE4EFHP
Agent Reach is a capability ROUTER, not an MCP server: it selects, installs
and health-checks upstream tools (yt-dlp, gh, bili-cli, feedparser, Exa) and
routes a request to whichever backend currently serves a platform. Vendored
from Panniantong/Agent-Reach v1.5.0 @ 06c202b, MIT, LICENSE-upstream included.
DISTRIBUTED THROUGH GIT, BECAUSE THE UPSTREAM INSTALLER DOES NOT REACH THE
FLEET. `agent-reach skill --install` writes to ~/.claude/skills — machine-local
and, in a remote session, ephemeral. Claude Code loads skills per project, and
these are separate repositories, so the skill has to exist in each one. That is
what sync-agents.sh already does for the shared subagents; it now carries
skills too.
The script needed two changes and both are recorded in it:
* It syncs DIRECTORIES for skills, copying only the ones under the canonical
tree and leaving every other entry in the target alone. Each repo has
skills of its own — trinity-preflight, and eleven marketing skills — and a
blanket rsync --delete would have silently eaten them. Verified surviving.
* `grep -n ^---$` exits 1 on a file with no frontmatter, which under
`set -euo pipefail` killed the whole sync after the first references/*.md,
silently, having written only the agents. Guarded with `|| true`. Found by
running it, not by reading it: the first run reported three agent writes
and exit 1.
THE FLEET NOTE ON TOP OF THE SKILL IS THE POINT, and it is ours, not upstream.
`agent-reach doctor` answers "is the tool installed and configured", NOT "can
it reach the internet", and when those come apart it reports the optimistic
one. Measured here 2026-08-29: doctor said 3/15 channels available; an actual
call reached 0/15 — YouTube, Jina Reader and RSS all returned proxy 403, and
Exa needs an interactive OAuth an unattended session cannot complete. That is
this sandbox blocking egress, not the tool lying, and on a desktop or a T12
host the zero-config channels work as documented. The note tells every agent
to make one real call before claiming a channel works, and to read
`CONNECT tunnel failed, response 403` as the proxy refusing rather than as a
broken tool.
Two install routes are wrong and the note says so: the GitHub archive URL and
codeload are both proxy-403 here, and the `agent-reach` package on PyPI is a
DIFFERENT project by a different author (jgalea, v0.1.0) that happens to share
the name. Clone and install from source.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GtRGdqH6BZcXDDFDE4EFHP
DealAppSeo
marked this pull request as ready for review
August 29, 2026 20:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is in here
dbe8f3a67870ddagent-reachskill (unrelated; canonical copy is trinity-symphony-shared#45)dbe8f3a— the number went up, and the gap is published with itThe README claimed 70 on-chain reputation writes; the live count is 92. Raising the number alone would have been the easy half and the dishonest one — there is a 13-day gap between them, and a reader comparing timestamps would find it without being told.
So the outage is published beside the number: Groq retired the hardcoded validator model, every validator call 404'd,
runPCPscored that silence as a zero, and the cascade disputed contracts asprovider_at_fault— the system converting its own outage into someone else's bad reputation. Root-caused and fixed in repid-engine#536; write #920xdaf4863b…landed 2026-08-29 12:01:34.A public counter that only ever moves up, with the stalls edited out, is a marketing number. The point of this project is that it is not one.
67870dd— the agent-reach skillAgent Reach is a capability router, not an MCP server — it selects, installs and health-checks upstream tools (yt-dlp,
gh, bili-cli, feedparser, Exa). Vendored at v1.5.0 @06c202b, MIT.These files are GENERATED. Canonical source is
trinity-symphony-shared/.claude/skills/agent-reach/, distributed byscripts/sync-agents.sh. This adds.claude/skills/to this repo for the first time.Nothing under Marco De Rossi's files is touched —
ERC8004SPEC.md,contracts/,test/andabis/are untouched by this change.The fleet note on top of the skill is ours.
agent-reach doctoranswers "is the tool installed and configured", not "can it reach the internet". Measured 2026-08-29: doctor said 3/15 channels available; an actual call reached 0/15 — proxy403on YouTube, Jina Reader and RSS; Exa needs interactive OAuth. That is the sandbox blocking egress, not the tool lying; on a desktop or a T12 host the zero-config channels work as documented. The note tells every agent to make one real call before claiming a channel works.Two install routes are wrong and the note says so:
archive/main.zipandcodeload.github.comare proxy-403, and theagent-reachpackage on PyPI is a different project by a different author (jgalea, v0.1.0) sharing the name.🤖 Generated with Claude Code
https://claude.ai/code/session_01GtRGdqH6BZcXDDFDE4EFHP